极品飞车世界 NFS World 服务器搭建教程

本篇文章主要讲搭建过程,以及出现问题的解决方法。难度较高,我已经搭建好了服务器供玩耍,如何连接服务器看这篇文章或者 简书

不推荐的方法

我先找到 github SoapboxRaceWorld上面的开源服务器,尝试了很久,最后搭建好了之后发现游戏中购车的界面进不去,在后台数据库发现少数据,但是我已经全部导入了的😂
缺少表
在代码里面搜索,能在代码里找到,给的SQL文件里面没有。

既然已经不推荐用这种方法了,可以跳过这里。

已经一年没更新了
打包出来的是 war ,需要 wildfly 才能部署,需要做的事情如下:

  1. 下载 releases 打包好的 war,以及 wiki 里提供的 wildfly (google drive 要梯子)
  2. 放入 war 到 wildfly 目录下的 standalone/deployments
    war 包放入这个文件夹
  3. 配置 openfire 服务 (配置文件 wildfly/standalone/configuration/standalone.xml)
    配置 xmppIp 为公网地址(必须检查)
    Udp freeroam、race 都是未完成的功能(私服官方到现在都没搞定😂我也不知道是什么功能)
    配置 openfire restful api 地址
    配置 openfire token
    standalone.xml 中系统属性示例
    也可以登录wildfly 后台修改http://localhost:9990/console/App.html#profile/properties(需要创建账户,运行 add-user.sh 按提示即可)。
    系统属性配置
  4. 配置数据库,同样可以编辑 xml 也可以登录后台数据源配置
    默认用户密码 soapbox soapbox
    5.(可选)配置绑定的后台管理地址
    默认绑定127.0.0.1,docker镜像我改成0.0.0.0了
  5. 可在后台重启服务
    重新加载服务

正文

wiki 给出需要用到服务 openfire 、mysql 、wildfly(后面我找到了 nfsw-server.jar替换掉)都需要用到数据库,所以先从数据库开始吧。
来源 https://github.com/SoapboxRaceWorld/soapbox-race-core/wiki/How-does-it-work?

搭建前提

有 1G 以上的内存,公网IP(如果只是要本地,直接下一个模拟器就好了,不用这么麻烦。),最好 Linux 主机,windows 没试过,不过应该也行。

1. MySQL 数据库

  1. 导入OPENFIRE.sqlsoapbox.sql(修改后从数据库导出的,原来的 db.sql 有点问题,soapbox 数据库大小写没对上😂)
    默认openfire用户名:openfire 密码 openfire
    默认soapbox用户名:soapbox 密码soapbox
    PS:不用来试我数据库了,没开放3306端口,我是用SSH通道用密钥连接的。
  2. 保持数据运行就好了

2.openfire 配置

如 wiki 写的一样OpenFire从 google drive下载。
1.配置数据库连接
登录后台,admin 密码 admin
访问 localhost:9090/plugins/restapi/rest-api.jsp 启用 restful api 把 openfire token 保存下来配置nfsw-server需要用到
登录后台 localhost:9090/server-properties.jsp
Xmpp.domain 改为与后面的nfsw-server.cfg中xmppIp一样的地址
2.配置Xmpp.domain 一般为内网 ip (使用外网ip的话云服务一般都要去配置安全组,openfire 只要能访问就行了)
配置Xmpp.domain错误导致连接的时候会检验 Host 字段,不相同则无法建立连接,无法使用聊天服务
运行 openfire/bin/openfire start让其在后台运行即可。
日志文件在 openfire/logs/目录下,有问题时可以使用tailf openfire/logs/all.log持续查看输出,方便找配置错误,当没有报数据库连不上,没有打印出一些堆栈时就可配置nfsw-server了,否则检查配置是否有误。

3.nfsw-server 配置

在github下载nfsw-server.jar、nfsw-server.cfg也可以自己编译,下载 jdk、maven执行 mvn clean compile assembly:single

  1. 配置数据库连接(src/main/resources/META-INF/persistence.xml)使用打包的话可以先替换掉压缩包里的 xml
    如果不改用户名密码的话配置好url即可,或者添加 host 解析nfsw-server 到ip地址127.0.0.1 也可以

  2. 在nfsw-server.cfg中配置xmppIp(在openfire配置的xmpp.domain 一定要一样,否则报错 Unable to authenticate: Fail to create new session.

  3. openfireToken(在openfire配置的openfireToken)

  4. httpPort是游戏开放端口,我用的是1337(外网开放1337端口)
    其他没提到的就和上图一样就好了

  5. nfsw-server.cfg,nfsw-server.jar 放在同一目录下执行java -jar nfsw-server.jar
    注意看输出,先连接 openfire restful api 返回 201说明 openfire 连接成功
    201才表示连接成功
    然后连接数据库,当没有报数据库连不上,没有打印出一些堆栈时就可应该可以了,否则检查配置是否有误。

enjoy!

nfsw 服务搭建已经完成,在开头的文章下载 nfsw 以及启动器就可以登录了!等会再写一篇客户端登录的教程
PS:我准备把这个服务做成 docker 镜像,这样部署的时候就不用这么配来配去(自己捣鼓了差不多一个星期才搞定,先是 wildfly 搭建的数据库缺数据,无法购买车辆,后是 openfire 中 xmpp.domain 配置错误,进入游戏就提示与服务器断开连接,其实是跨域的问题,nfsw-server的xmppIp要与其相同。)
上面项目都是基本已经停止维护的,使用的 openfire 是4.0.2 的,我fork的老哥michelinus/**nfsw-server**也停止更新一年了。
有问题可以在下面留言哦,欢迎一起交流(虽然极大可能零回复)

Author: whllhw
Link: https://whllhw.ml/posts/2018/09/16/极品飞车世界 NFS World 服务器搭建教程/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.